home *** CD-ROM | disk | FTP | other *** search
/ Acorn RISC PD-CD 1 / Acorn RISC PD-CD 1.iso / languages / dde / _pc / h / event < prev    next >
Text File  |  1992-02-09  |  6KB  |  170 lines

  1. (* Title:   event.h
  2.  * Purpose: system-independent central processing for window sytem events.
  3.  *
  4.  *)
  5.  
  6. # ifndef __event_h
  7. # define __event_h
  8.  
  9. # ifndef __menu_h
  10. # include "menu.h"
  11. # endif
  12.  
  13. # ifndef __wimp_h
  14. # include "wimp.h"
  15. # endif
  16.  
  17. (* ************************** Processing Events ************************* *)
  18.  
  19. (* ---------------------------- event_process ------------------------------
  20.  * Description:   Process one event.
  21.  *
  22.  * Parameters:    void.
  23.  * Returns:       void.
  24.  * Other Info:    If the number of current active windows is 0 then the
  25.  *                program exits. One event is polled and processed (with
  26.  *                the exception of some complex menu handling, this really
  27.  *                means passing the event on to the "win" module).  Unless
  28.  *                an application window is claiming idle events, this 
  29.  *                function waits when processor is idle.
  30.  *                Typically this should be called in a loop in the main
  31.  *                function of the application.
  32.  *
  33.  *)
  34. procedure event_process; extern;
  35.  
  36.  
  37. (* ----------------------------- event_anywindows --------------------------
  38.  * Description:   Informs caller if there are any windows active, that can
  39.  *                process events.
  40.  *
  41.  * Parameters:    void.
  42.  * Returns:       TRUE if there are any active windows.
  43.  * Other Info:    None.
  44.  *
  45.  *)
  46. function event_anywindows : boolean; extern;
  47.  
  48.  
  49.  
  50. (* *************************** Attaching menus *************************** *)
  51.  
  52. type event_w_ptr = ^event_w;
  53.      event_w = integer;
  54.  
  55. type event_hitstr_ptr = ^event_hitstr;
  56.      event_hitstr = array[0..9] of byte;
  57.  
  58. type event_menu_proc = ^procedure menu_proc(handle : pointer;
  59.                                             hit : event_hitstr_ptr);
  60.  
  61. type event_menu_maker = ^function menu_maker(handle : pointer)
  62.                                                    : menu;
  63.  
  64.  
  65. (* -------------------------- event_attachmenu ----------------------------
  66.  * Description:   Attach a menu, and its associated handler function, to the
  67.  *                given window.
  68.  *
  69.  * Parameters:    event_w -- the window to which menu should be attached
  70.  *                menu -- the menu structure
  71.  *                event_menu_proc -- the handler for the menu
  72.  *                void *handle -- caller-defined handle
  73.  * Returns:       TRUE if able to attach menu.
  74.  * Other Info:    The menu should have been created by a call to menu_new
  75.  *                or something similar.  When user invokes a menu from the
  76.  *                given window, this menu will be activated. The handler
  77.  *                function will be called when the user selects a menu entry
  78.  *                The handler's parameter "hit" is a string containing a 
  79.  *                character for each level of nesting in a hierarchical menu
  80.  *                structure, terminated by a 0 character. A call with 
  81.  *                menu == 0 removes the attachment. NOTE: to catch menu 
  82.  *                events on the iconbar attach a menu to win_ICONBAR
  83.  *                (defined in the win module). 
  84.  *                
  85.  *)
  86. function event_attachmenu(w : event_w;
  87.                 menu_proc : event_menu_proc;
  88.                 handle : pointer) : boolean; extern;
  89.  
  90.  
  91. (* ------------------------ event_attachmenumaker -------------------------
  92.  * Description:   Attach to the given window, a function which makes a menu
  93.  *                when the user invokes a menu
  94.  *
  95.  * Parameters:    event_w -- the window to which the menu maker should be
  96.  *                           attached
  97.  *                event_menu_maker -- the menu maker function
  98.  *                event_menu_proc -- handler for the menu
  99.  *                void *handle -- caller-defined handle
  100.  * Returns:       TRUE if able to attach menu maker
  101.  * Other Info:    This works similarly to event_attachmenu, except that it
  102.  *                allows you to make any last minute changes to flags in the
  103.  *                menu etc. (eg. ticks/fades), before displaying it. Call 
  104.  *                with event_menu_maker==0 removes attachment
  105.  *
  106.  *)
  107. procedure event_attachmenumaker(w : event_w;
  108.                 menu_maker : event_menu_maker;
  109.                 menu_proc : event_menu_proc;
  110.                 handle : pointer) : boolean; extern;
  111.  
  112.  
  113. (* ----------------------- event_clear_current_menu ------------------------
  114.  * Description:   Clears the current menu tree.
  115.  *
  116.  * Parameters:    void.
  117.  * Returns:       void.
  118.  * Other Info:    To be used when you are not sure that all menus have been
  119.  *                cleared from the screen.
  120.  *
  121.  *)
  122. procedure event_clear_current_menu; extern;
  123.  
  124.  
  125.  
  126. (* ------------------ event_is_menu_being_recreated ------------------------
  127.  * Description:   Informs caller if a menu is being recreated.
  128.  *
  129.  * Parameters:    void.
  130.  * Returns:       void.
  131.  * Other Info:    Useful for when the RISC OS library is recreating a menu
  132.  *                due to Adjust click (call it in your menu makers).
  133.  *
  134.  *)
  135. function event_is_menu_being_recreated : boolean; extern;
  136.  
  137.  
  138. (* ***************************** masking off events ********************** *)
  139.  
  140. (* ----------------------------- event_setmask -----------------------------
  141.  * Description:   Sets the mask used by wimp_poll and wimpt_poll when polling
  142.  *                the WIMP.
  143.  *
  144.  * Parameters:    wimp_emask mask - the desired mask.
  145.  * Returns:       void
  146.  * Other Info:    Bits of the mask are set if you want the corresponding
  147.  *                events ignored (as in the wimp_poll SWI)
  148.  *                eg. event_setmask(wimp_EMNULL | wimp_EMPTRENTER);
  149.  *                will ignore nulls and pointer entering window events.
  150.  *                NOTE: the default mask is to ignore null events only.
  151.  *
  152.  *)
  153. procedure event_setmask(mask : wimp_emask); extern;
  154.  
  155.  
  156. (* --------------------------- event_getmask -------------------------------
  157.  * Description:   Inform the caller of the current mask being used to poll
  158.  *                the WIMP.
  159.  *
  160.  * Parameters:    void.
  161.  * Returns:       The mask currently used.
  162.  * Other Info:    none.
  163.  *
  164.  *)
  165. function event_getmask : wimp_emask; extern;
  166.  
  167. #endif
  168.  
  169. (* end event.h *)
  170.